#include<stdio.h>
#include<stdlib.h>
#include <string.h>

//aptconfig mtr_config()
int main()
{
  int **mat;
  char tam[4],tamaux[2];
  char *pri;
  char *sec;  
  int i,j,a=0,b=0,c=0,x=0;
  long file_size;
  
  FILE *apt = fopen("config.txt","r");
  
  //coloca o cursor no final do arquivo
  fseek(apt, 0, SEEK_END);

	//le o numero de bytes ate o final do arquivo	
  file_size = ftell(apt)+1;

  //coloca o cursor no comeco do arquivo
	fseek (apt, 0, SEEK_SET);

  //vetor com tamanho total de bytes do arquivo de config  
  pri = (char*)malloc(sizeof(char)*(file_size));

  //pega o numero de linhas e colunas do arquivo de config
  fgets(tam,4,apt);
  tam[4]='\0';
  
  // pega o numero de colunas dado no arquivo de config
  tamaux[0]=tam[2];
  tamaux[1]='\0';

  //transforma o char numero de linhas para inteiro
  i = atoi(tam);
  
  //transforma o char numero de colunas para inteiro
  j = atoi(tamaux);

  //malloc na matriz de inteiros
  mat = (int**)malloc(sizeof(int)*i);
  for(a=0;a<=i;a++)
  {
    mat[a] = (int*) malloc(sizeof(int)*j);
  }
  fseek(apt,2,SEEK_CUR);

  //insere na matriz de config
  for(a=0;a<i;a++)
  {
    //pega o valor no arkivo ateh achar o \n
    fgets(pri,file_size,apt);
    //encontra o lugar exato do \n e troca por \0
    while(pri[c]!='\n')
    {
      c++;
    }
    pri[c]='\0';
    c=0;
    
    //faz o primeiro strtok
    sec = strtok(pri," "); 
    
    //insere as linhas
    for(b=0;b<j;b++)
    {
      //transforma em inteiro o strtok
      x = atoi(sec);
      
      //insere na matriz
      mat[a][b] = x;
      
      //pega os proxs strtok
      sec = strtok(NULL," ");  
    }
  }

  //imprime a matriz de config 
  for(a=0;a<i;a++)
  {
    for(b=0;b<j;b++)
    {
      printf("%d ",mat[a][b]);
    }
    printf("\n");
  }
 
  free(pri);
  
  system("PAUSE");  
  fclose(apt);
  return 0;
}
